![]() |
![]() |
![]() | |
![]() ![]() ![]() ![]()
╨αßε≥α ± ⌠αΘδα∞Φ |
╧≡ΦδεµσφΦσ StreamToken┬ ∩≡ΦδεµσφΦΦ StreamToken ∞√ Σσ∞εφ±≥≡Φ≡≤σ∞ Φ±∩εδⁿτεΓαφΦσ Ωδα±±α StreamTokenizer Σδ ≡ατßε≡α Γ⌡εΣφεπε ∩ε≥εΩα. ┬φα≈αδσ ∩≡ΦδεµσφΦσ τα∩≡α°ΦΓασ≥ ≤ ∩εδⁿτεΓα≥σδ ±≥≡εΩ≤ Σδ ≡ατßε≡α, τα∩Φ±√Γα σσ Γ ⌠αΘδ. ╟α≥σ∞ ²≥ε≥ ⌠αΘδ ε≥Ω≡√Γασ≥± Σδ ≈≥σφΦ ß≤⌠σ≡ΦτεΓαφφ√∞ ∩ε≥εΩε∞ Φ ≡ατßΦ≡ασ≥± φα ±ε±≥αΓφ√σ ²δσ∞σφ≥√. ╩αµΣ√Θ ≥αΩεΘ ²δσ∞σφ≥ Γ√ΓεΣΦ≥± Γ ε≥ΣσδⁿφεΘ ±≥≡εΩσ, ΩαΩ ²≥ε ∩εΩαταφε φα ≡Φ±. 4. ╨Φ±. 4. ╨ατßε≡ Γ⌡εΣφεπε ∩ε≥εΩα Γ ∩≡ΦδεµσφΦΦ StreamToken ╬ß≡α≥Φ≥σ ΓφΦ∞αφΦσ, ≈≥ε Γ ∩≡ε÷σ±±σ ≡ατßε≡α τφα≈σφΦσ 3.14 ß√δε Γε±∩≡Φφ ≥ε ΩαΩ ≈Φ±δεΓεσ, α 3,14 - φσ≥. ▌≥ε ∩ε≥ε∞≤, ≈≥ε ∩≡Φ φα±≥≡εΘΩσ ≡ατßε≡∙ΦΩα ∞√ ≤ΩαταδΦ, ≈≥ε ±Φ∞Γεδ '.' Γδ σ≥± εß√≈φ√∞. ╚±⌡εΣφ√Θ ≥σΩ±≥ ∩≡ΦδεµσφΦ╚±⌡εΣφ√Θ ≥σΩ±≥ ∩≡ΦδεµσφΦ StreamToken ∩≡σΣ±≥αΓδσφ Γ δΦ±≥Φφπσ 1. ╦Φ±≥Φφπ 1. ╘αΘδ StreamToken.java import java.io.*; public class StreamToken { public static void main(String args[]) { DataOutputStream OutStream; DataInputStream InStream; byte bKbdInput[] = new byte[256]; String sOut; try { System.out.println( "Enter string to parse..."); System.in.read(bKbdInput); sOut = new String(bKbdInput, 0); OutStream = new DataOutputStream( new BufferedOutputStream( new FileOutputStream( "output.txt"))); OutStream.writeBytes(sOut); OutStream.close(); InStream = new DataInputStream( new BufferedInputStream( new FileInputStream( "output.txt"))); TokenizerOfStream tos = new TokenizerOfStream(); tos.TokenizeIt(InStream); InStream.close(); System.out.println( "Press <Enter> to terminate..."); System.in.read(bKbdInput); } catch(Exception ioe) { System.out.println(ioe.toString()); } } } class TokenizerOfStream { public void TokenizeIt(InputStream is) { StreamTokenizer stok; String str; try { stok = new StreamTokenizer(is); stok.slashSlashComments(true); stok.ordinaryChar('.'); while(stok.nextToken() != StreamTokenizer.TT_EOF) { switch(stok.ttype) { case StreamTokenizer.TT_WORD: { str = new String( "\nTT_WORD >" + stok.sval); break; } case StreamTokenizer.TT_NUMBER: { str = "\nTT_NUMBER >" + Double.toString(stok.nval); break; } case StreamTokenizer.TT_EOL: { str = new String("> End of line"); break; } default: { if((char)stok.ttype == '"') { str = new String( "\nTT_WORD >" + stok.sval); } else str = "> " + String.valueOf( (char)stok.ttype); } } System.out.println(str); } } catch(Exception ioe) { System.out.println(ioe.toString()); } } } ╬∩Φ±αφΦσ Φ±⌡εΣφεπε ≥σΩ±≥α ∩≡ΦδεµσφΦ╧ε±δσ ΓΓεΣα ±≥≡εΩΦ ± ΩδαΓΦα≥≤≡√ Φ τα∩Φ±Φ σσ Γ ⌠αΘδ ≈σ≡στ ∩ε≥εΩ φα°σ ∩≡ΦδεµσφΦσ ±ετΣασ≥ Γ⌡εΣφεΘ ß≤⌠σ≡ΦτεΓαφφ√Θ ∩ε≥εΩ, ΩαΩ ²≥ε ∩εΩαταφε φΦµσ: InStream = new DataInputStream( new BufferedInputStream( new FileInputStream("output.txt"))); ─αδσσ Σδ ²≥επε ∩ε≥εΩα ±ετΣασ≥± ≡ατßε≡∙ΦΩ, Ωε≥ε≡√Θ ε⌠ε≡∞δσφ Γ ε≥Σσδⁿφε∞ Ωδα±±σ TokenizerOfStream, ε∩≡σΣσδσφφε∞ Γ φα°σ∞ ∩≡ΦδεµσφΦΦ: TokenizerOfStream tos = new TokenizerOfStream(); ┬±δσΣ τα ²≥Φ∞ ∞√ Γ√τ√Γασ∞ ∞σ≥εΣ TokenizeIt, ε∩≡σΣσδσφφ√Θ Γ Ωδα±±σ TokenizerOfStream, ∩σ≡σΣαΓα σ∞≤ Γ Ωα≈σ±≥Γσ ∩α≡α∞σ≥≡α ±±√δΩ≤ φα Γ⌡εΣφεΘ ∩ε≥εΩ: tos.TokenizeIt(InStream); ╠σ≥εΣ TokenizeIt Γ√∩εδφ σ≥ ≡ατßε≡ Γ⌡εΣφεπε ∩ε≥εΩα, ε≥εß≡αµα ≡στ≤δⁿ≥α≥√ ≡ατßε≡α φα Ωεφ±εδΦ. ╧ε±δσ Γ√∩εδφσφΦ ≡ατßε≡α Γ⌡εΣφεΘ ∩ε≥εΩ ταΩ≡√Γασ≥± ∞σ≥εΣε∞ close: InStream.close(); ╤α∞εσ Φφ≥σ≡σ±φεσ Γ φα°σ∞ ∩≡ΦδεµσφΦΦ ±Γ ταφε, ε≈σΓΦΣφε, ± Ωδα±±ε∞ TokenizerOfStream, ∩ε²≥ε∞≤ ∩σ≡σΘΣσ∞ Ω σπε ε∩Φ±αφΦ■. ┬ ²≥ε∞ Ωδα±±σ ε∩≡σΣσδσφ ≥εδⁿΩε εΣΦφ ∞σ≥εΣ TokenizeIt: public void TokenizeIt(InputStream is) { . . . } ╧εδ≤≈α Γ Ωα≈σ±≥Γσ ∩α≡α∞σ≥≡α ±±√δΩ≤ φα Γ⌡εΣφεΘ ∩ε≥εΩ, εφ ∩≡σµΣσ Γ±σπε ±ετΣασ≥ Σδ φσπε ≡ατßε≡∙ΦΩ Ωδα±±α StreamTokenizer: StreamTokenizer stok; stok = new StreamTokenizer(is); ═α±≥≡εΘΩα ∩α≡α∞σ≥≡εΓ ≡ατßε≡∙ΦΩα ε≈σφⁿ ∩≡ε±≥α Φ ±ΓεΣΦ≥± Ω Γ√τεΓα∞ Γ±σπε ΣΓ≤⌡ ∞σ≥εΣεΓ: stok.slashSlashComments(true); stok.ordinaryChar('.'); ╠σ≥εΣ slashSlashComments ΓΩδ■≈ασ≥ ≡σµΦ∞ ≡α±∩ετφαΓαφΦ Ωε∞∞σφ≥α≡ΦσΓ Γ ±≥Φδσ τ√Ωα ∩≡επ≡α∞∞Φ≡εΓαφΦ ╤++, α ∞σ≥εΣ ordinaryChar εß· Γδ σ≥ ±Φ∞Γεδ '.' εß√≈φ√∞ ±Φ∞Γεδε∞. ╧ε±δσ φα±≥≡εΘΩΦ τα∩≤±Ωασ≥± ÷ΦΩδ ≡ατßε≡α Γ⌡εΣφεπε ∩ε≥εΩα, ∩≡Φ≈σ∞ ≤±δεΓΦσ∞ ταΓσ≡°σφΦ ÷ΦΩδα Γδ σ≥± Σε±≥ΦµσφΦσ Ωεφ÷α ²≥επε ∩ε≥εΩα: while(stok.nextToken() != StreamTokenizer.TT_EOF) { . . . } ┬ ÷ΦΩδσ αφαδΦτΦ≡≤σ≥± ±εΣσ≡µΦ∞εσ ∩εδ ttype, Ωε≥ε≡εσ ταΓΦ±Φ≥ ε≥ ≥Φ∩α ²δσ∞σφ≥α, εßφα≡≤µσφφεπε Γε Γ⌡εΣφε∞ ∩ε≥εΩσ: switch(stok.ttype) { case StreamTokenizer.TT_WORD: { str = new String("\nTT_WORD >" + stok.sval); break; } case StreamTokenizer.TT_NUMBER: { str = "\nTT_NUMBER >" + Double.toString(stok.nval); break; } case StreamTokenizer.TT_EOL: { str = new String("> End of line"); break; } default: { if((char)stok.ttype == '"') str = new String( "\nTT_WORD >" + stok.sval); else str = "> " + String.valueOf( (char)stok.ttype); } } ═α ±δεΓα Φ ≈Φ±δσφφ√σ τφα≈σφΦ ∞√ ≡σαπΦ≡≤σ∞ ε≈σφⁿ ∩≡ε±≥ε - τα∩Φ±√Γασ∞ Φ⌡ ≥σΩ±≥εΓεσ ∩≡σΣ±≥αΓδσφΦσ Γ ≡αßε≈≤■ ∩σ≡σ∞σφφ≤■ str ≥Φ∩α String. ╧≡Φ εßφα≡≤µσφΦΦ Ωεφ÷α ±≥≡εΩΦ Γ ²≥≤ ∩σ≡σ∞σφφ≤■ τα∩Φ±√Γασ≥± ±≥≡εΩα End of line. ┼±δΦ µσ εßφα≡≤µσφ εß√≈φ√Θ ±Φ∞Γεδ, ∞√ ±≡αΓφΦΓασ∞ σπε ± ±Φ∞Γεδε∞ ΩαΓ√≈ΩΦ. ╧≡Φ ±εΓ∩αΣσφΦΦ Γ ∩σ≡σ∞σφφ≤■ str τα∩Φ±√Γασ≥± ±εΣσ≡µΦ∞εσ ∩εδ sval, Γ Ωε≥ε≡ε∞ φα⌡εΣ ≥± ±δεΓα, εßφα≡≤µσφφ√σ Γφ≤≥≡Φ ΩαΓ√≈σΩ. ┼±δΦ µσ εßφα≡≤µσφφ√Θ ±Φ∞Γεδ φσ Γδ σ≥± ±Φ∞Γεδε∞ ΩαΓ√≈ΩΦ, εφ ∩≡σεß≡ατ≤σ≥± Γ ±≥≡εΩ≤ Φ τα∩Φ±√Γασ≥± Γ ∩σ≡σ∞σφφ≤■ str. ┬ ταΩδ■≈σφΦΦ ∞σ≥εΣ Γ√ΓεΣΦ≥ ±≥≡εΩ≤ str Γ ±≥αφΣα≡≥φ√Θ ∩ε≥εΩ Γ√ΓεΣα, ε≥εß≡αµα φα Ωεφ±εδΦ Γ√Σσδσφφ√Θ ²δσ∞σφ≥ ∩ε≥εΩα: System.out.println(str); |